package com.htpay.model.vo;

import lombok.Data;

import java.lang.reflect.Field;
import java.util.Map;

@Data
public class ChargeParamsModel {

    /**
     * map to bean
     *
     * @param map
     * @param paramsModel
     * @throws Exception
     */
    private void mapToObject(Map<String, String> map) throws Exception {
        //拿到 ChargeParamsModel 的对应的class对象
        Class<ChargeParamsModel> clazz = (Class<ChargeParamsModel>) this.getClass();

        //通过反射拿到所有的属性
        //拿到所有的属性值
        Field[] fields = clazz.getDeclaredFields();

        //遍历属性
        for (int i = 0; i < fields.length; i++) {
            Field f = fields[i];
            //获取属性的名称
            String key = f.getName();
            //跳过属性的权限检查
            f.setAccessible(true);
            //都是字符串 操作  进行判断
            //如果属性的类型是int 判断int.class   如果是Ingeter 判断为 Integer.class
            if (f.getType() == int.class) {
                if (map.get(key) != null) {
                    f.set(this, Integer.valueOf(map.get(key)));
                }
            } else if (f.getType() == double.class) {
                if (map.get(key) != null) {
                    f.set(this, Double.valueOf(map.get(key)));
                }
            } else {
                f.set(this, map.get(key));
            }
        }
    }

    public ChargeParamsModel() {
        super();
    }

    public ChargeParamsModel(Map<String, String> params) throws Exception {
        mapToObject(params);
    }

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 产品描述
     */
    private String productDesc;

    /**
     * 其他附加字段
     */
    private String attach;

    /**
     * sku：数量
     */
    private int count;

    /**
     * 二维码过期时间
     */
    private String qrcodeExpire;
}
